package com.example.leetcode.c901_end.c976;
/**
 * 给定由一些正数（代表长度）组成的数组 A，返回由其中三个长度组成的、面积不为零的三角形的最大周长。
 *
 * 如果不能形成任何面积不为零的三角形，返回 0。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：[2,1,2]
 * 输出：5
 * 示例 2：
 *
 * 输入：[1,2,1]
 * 输出：0
 * 示例 3：
 *
 * 输入：[3,2,3,4]
 * 输出：10
 * 示例 4：
 *
 * 输入：[3,6,2,3]
 * 输出：8
 *  
 *
 * 提示：
 *
 * 3 <= A.length <= 10000
 * 1 <= A[i] <= 10^6
 *
 * 来源：力扣（LeetCode）
 * 链接：https://leetcode-cn.com/problems/largest-perimeter-triangle
 * 著作权归领扣网络所有。商业转载请联系官方授权，非商业转载请注明出处。
 */

import java.util.Arrays;

/**
 * 三角形的最大周长
 * @author zhanpengguo
 * @date 2020-11-29 12:27
 */
public class Solution {

    public int largestPerimeter(int[] A) {
        Arrays.sort(A);
        int index = A.length - 3;
        while (index >= 0) {
            if (can(A[index], A[index + 1], A[index + 2])) {
                return A[index] + A[index + 1] + A[index + 2];
            }
            index--;
        }
        return 0;
    }

    private boolean can(int a, int b, int c) {
        if (a + b <= c) {
            return false;
        }
        if (a + c <= b) {
            return false;
        }
        return b + c > a;
    }

    public static void main(String[] args) {
        Solution solution = new Solution();
        int[] A = {2,1,2};
        int i = solution.largestPerimeter(A);
        System.out.println(i);
    }
}
